#include <stdio.h>
#include <stdbool.h>
#include "lista.h"


/*Función auxiliar para saber si la preba devuelve OK o ERROR*/
void print_test(char * name , bool result){
	printf("%s : %s \n", name, result ? "OK": "ERROR");
}

void prueba_lista(){
	lista_t* l;
	int v1 = 5;
	int v2 = 4;
	int v3 = 3;
	int v4 = 2;
	int v5 = 1;
	int* aux;
	
	/*Prueba crear una lista vacía */
	l = lista_crear ();
	print_test("Prueba crear una lista vacía ", l != NULL);
	/*Prueba que devolver el largo de una lista vacía es 0  */
	print_test("Prueba que devolver el largo de una lista vacía es 0" , lista_largo (l) == 0);
	/*Prueba que la lista esté vacía  */
	print_test ("Prueba lista está vacía devuelve OK ", lista_esta_vacia(l) );
	/*Prueba que no hay primer elemento en la lista vacía */
	print_test ("Prueba que lista ver primero devuelve NULL ", lista_ver_primero(l) == NULL);
	/*Prueba que no se puede borrar el primero en una lista vacía */
	print_test ("Prueba que no se puede borrar el primer elemento ", !lista_borrar_primero(l));
	/*Prueba agregar un elemento en el primer lugar de la lista*/
	print_test("Prueba aregar elemento en el primer lugar de la lista ", lista_insertar_primero(l, &v1));
	/*Prueba que la lista no está vacía */
	print_test ("Prueba lista no está vacía ", !lista_esta_vacia(l) );
	/*Prueba que el primer elemento sea el correcto */
	aux = lista_ver_primero(l);
	print_test("Prueba que el primer elemento sea el correcto ", *aux == 5);
	/*Prueba borrar el primer elemento */
	print_test("Prueba borrar el primer elemento ", lista_borrar_primero(l));
	/*Prueba ver que la lista está vacía */
	print_test("Prueba ver que la lista está vacía ", lista_esta_vacia(l));
	/*Prueba agregar elemenos en el primer lugar*/
	print_test("Prueba aregar elementos en el primer lugar de la lista ", lista_insertar_primero(l, &v1));
	print_test("Prueba aregar elementos en el primer lugar de la lista ", lista_insertar_primero(l, &v2));
	print_test("Prueba aregar elementos en el primer lugar de la lista ", lista_insertar_primero(l, &v3));
	print_test("Prueba aregar elementos en el primer lugar de la lista ", lista_insertar_primero(l, &v4));
	print_test("Prueba aregar elementos en el primer lugar de la lista ", lista_insertar_primero(l, &v5));
	/*Prueba ver que el primer elemento sea el correcto */
	aux = lista_ver_primero(l);
	print_test("Prueba que el primer elemento sea el correcto ", *aux == 1);
	/*Prueba que se devuelva el largo correcto */
	print_test ("Prueba ver el largo de la lista " , lista_largo(l) == 5);
	
	/*Prueba agregar elementos al final de la lista */
	/*Prueba que se devuelva el largo correcto */
	/*Prueba agregar muchos elementos al principio*/
	/*Prueba agregar muchos elementos al final*/
	/*Prueba crear un iterador de lista */
	/*Prueba que el iterador no está al final de la lista*/
	/*Prueba mover el iterador */
	/*Prueba ver el actual es el elemento correcto */
	/*Prueba prueba borrar el elemento actual */
	/*Prueba ver el actual es el elemento correcto */
	/*Prueba insertar */
	/*Prueba insertar */
	/*Prueba ver el primer elemento de la lista */
	/*Prueba devolver el largo correcto */
	/*función para imprimir la lista con el iterador???*/
	/*Destruyo el iterador  */
	/*Destruyo la lista */
	lista_destruir(l,NULL);


}



int main (){
	prueba_lista();
	return 0;
}